package com.tong.hao.ac.service.endpoint.mybatis;

import com.tong.hao.common.configuration.comm.CommConfigUtils;
import com.tong.hao.common.configuration.mybatis.MybatisMapperRefresh;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.Selector;
import org.springframework.stereotype.Service;

/**
 * @ClassName MybatisMapperEndpoint
 * @Author 友野浩二
 * @Date 2019/12/17 13:40
 * @Description 自定义端点: mybatis mapper.xml 刷新
 * @Version 1.0
 *
 * <pre>
 *     @EndPoint :
 *              相当于@WebEndpoint和@JmxEndpoint的整合；
 *                  @WebEndpoint 只会生成web的方式的端点监控；
 *                  @JmxEndpoint 只会生成Jmx的方式监控。
 *              属性id不能使用驼峰法，需要以-分割。
 *     Spring Boot
 *              会去扫描@EndPoint注解下的@ReadOperation, @WriteOperation, @DeleteOperation注解,
 *              分别对应生成Get/Post/Delete的Mapping。
 * </pre>
 */
@Endpoint(id = "mybatis-refresh")
@Service
public class MybatisMapperEndpoint {

    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    @ReadOperation
    public String refreshMyBatisXml() {
        return new MybatisMapperRefresh(sqlSessionFactory, CommConfigUtils.MAPPER_LOCATIONS).readMapperXml();
    }

}
